#ifndef _BSP_ILI9341_H_
#define _BSP_ILI9341_H_

#include "stm32f10x.h"
#include "bsp_systick.h"
#include "bsp_usart.h"

#define     LCD_RS_CLR      GPIO_ResetBits(GPIOC, GPIO_Pin_8)
#define     LCD_CS_CLR      GPIO_ResetBits(GPIOC, GPIO_Pin_9)
#define     DATAOUT(data)   GPIO_Write(GPIOB, data)
#define     LCD_WR_CLR      GPIO_ResetBits(GPIOC, GPIO_Pin_7)
#define     LCD_WR_SET      GPIO_SetBits(GPIOC, GPIO_Pin_7)
#define     LCD_CS_SET      GPIO_SetBits(GPIOC, GPIO_Pin_9)
#define     LCD_RS_SET      GPIO_SetBits(GPIOC, GPIO_Pin_8)
#define     LCD_RD_CLR      GPIO_ResetBits(GPIOC, GPIO_Pin_6)
#define     LCD_RD_SET      GPIO_SetBits(GPIOC, GPIO_Pin_6)

#define     DATAIN          GPIO_ReadInputData(GPIOB)
#define	    LCD_LED         GPIO_SetBits(GPIOC, GPIO_Pin_10)		//LCD背光    	PC10 

//LCD重要参数集
typedef struct  
{										    
	uint16_t width;			//LCD 宽度
	uint16_t height;		//LCD 高度
	uint16_t id;			//LCD ID
	uint8_t  dir;			//横屏还是竖屏控制：0，竖屏；1，横屏。	
	uint16_t wramcmd;		//开始写gram指令
	uint16_t setxcmd;		//设置x坐标指令
	uint16_t setycmd;		//设置y坐标指令	 
}_lcd_dev;

//LCD参数
extern _lcd_dev lcddev;	//管理LCD重要参数
//LCD的画笔颜色和背景色	   
extern uint16_t  POINT_COLOR;//默认红色    
extern uint16_t  BACK_COLOR; //背景颜色.默认为白色

//画笔颜色
#define WHITE         	 0xFFFF
#define BLACK         	 0x0000	  
#define BLUE         	 0x001F  
#define BRED             0XF81F
#define GRED 			 0XFFE0
#define GBLUE			 0X07FF
#define RED           	 0xF800
#define MAGENTA       	 0xF81F
#define GREEN         	 0x07E0
#define CYAN          	 0x7FFF
#define YELLOW        	 0xFFE0
#define BROWN 			 0XBC40 //棕色
#define BRRED 			 0XFC07 //棕红色
#define GRAY  			 0X8430 //灰色
#define LGRAY 			 0XC618 //浅灰色(PANNEL),窗体背景色

extern uint16_t LCD_X_LENGTH,LCD_Y_LENGTH; 

void bsp_ili9341_init(void);
void lcd_clear(uint16_t color);


#endif
